$(function () {
	var url = location.search; // 获取url中"?"符后的字串
	path = location.host;
	var theRequest = new Object();
	if (url.indexOf("?") != -1) {
		var str = url.substr(1);
		strs = str.split("&");
		for (var i = 0; i < strs.length; i++) {
			theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
			userName = theRequest[strs[i].split("=")[0]];
		}
	}
	init();
	//图像信息
	images="";
});

// 树形图setting配置
var setting = {
	view: {
		showLine: true, // 是否显示节点之间的连线
		fontCss: {
			'color': 'black',
			'font-weight': 'bold'
		}
		// 字体样式函数
	},
	data: {
		simpleData: { // 简单数据模式
			enable: true,
			idKey: "id"
		}
	},
	callback: {
		onClick: function (event, treeId, treeNode) {
			var id = treeNode.id;
			var name = treeNode.name;
			if(treeNode.level==1){
				loadPlatFormList(id, name);
			}
		}
	}
};

// 加载zTree树形图
function onLoadZTree() {
	var treeNodes;
	$.ajax({
		async: false, // 是否异步
		cache: false, // 是否使用缓存
		type: 'POST', // 请求方式：post
		dataType: 'json', // 数据传输格式：json
		url : "../../../sequence/querySequenceTree",// 请求路径
		error: function () {
			// 请求失败处理函数
			alert('请求失败！');
		},
		success: function (data) {
			// 请求成功后处理函数
			treeNodes = data.content; // 把后台封装好的简单Json格式赋给treeNodes
			var zTree = $("#tree");
			zTree = $.fn.zTree.init(zTree, setting, treeNodes);
		}
	});
}



// 页面初始化调用方法
function init() {
	var tableInit = new TableInit();
	tableInit.Init();
}
var TableInit = function () {
	var oTableInit = new Object();
	// 初始化Table
	oTableInit.Init = function () {
		$('#testTaskTables').bootstrapTable({
			url: '../../../testTask/queryTestTask', // 请求后台的URL（*）
			method: "POST",
			contentType: "application/x-www-form-urlencoded",
			toolbar: "#toolbar",
			striped: true, // 是否显示行间隔色
			cache: false, // 是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
			pagination: true, // 是否显示分页（*）
			sortable: true, // 是否启用排序
			sortName: "CREATE_TIME",
			sortOrder: "DESC",
			checkboxHeader: false, // 是否显示表头的全选
			queryParamsType: "undefined", // 排序方式
			queryParams: oTableInit.queryParams, // 传递参数（*）
			sidePagination: "server", // 分页方式：client客户端分页，server服务端分页（*）
			pageNumber: localStorage.getItem("currentTestTaskPage")?parseInt(localStorage.getItem("currentTestTaskPage")):1, // 初始化加载第一页，默认第一页
			pageSize: 10, // 每页的记录行数（*）
			pageList: [10, 25, 50, 100], // 可供选择的每页的行数（*）
			search: false, // 是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
			strictSearch: true,
			showColumns: true, // 是否显示所有的列
			minimumCountColumns: 2, // 最少允许的列数
			clickToSelect: true, // 是否启用点击选中行
			height: 500, // 行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
			uniqueId: "ID", // 每一行的唯一标识，一般为主键列
			showToggle: true, // 是否显示详细视图和列表视图的切换按钮
			cardView: false, // 是否显示详细视图
			detailView: false,
			singleSelect:true,
			onDblClickRow: function (item, $element) { //双击事件，item为该行数据
					var state = (item.TASK_STATUS!='未开始')?true:false;//是否完成的状态
					window.location.href = "autoTest.html?testTaskId=" + item.ID + "&userName=" + userName + "&state=" + state
					+ "&startTime=" + item.TEST_START_TIME
					+ "&endTime=" + item.TEST_END_TIME;
			},
			onLoadSuccess:function(){
	            $('.bootstrap-table tr td').each(function () {
	                $(this).attr("title", $(this).text());
	                $(this).css("cursor", 'pointer');
	            });
	        },
			responseHandler: function (res) {
				return getTableData(res);
			}, // 是否显示父子表
			columns: [{
				checkbox: true,
				title: "选择"
			}, {
				field: 'ID',
				visible : false
			}, {
				field: 'TASK_NAME',
				title: '测试任务名称',
				sortable:true
			}, {
				field: 'TASK_CODE',
				title: '测试任务编号',
				sortable:true
			}, {
				field : 'TEST_START_TIME',
				title : '测试任务开始时间'
			}, {
				field : 'TEST_END_TIME',
				title : '测试任务结束时间'
			}, {
				field: 'RESULT',
				title: '测试结果'
			}, {
				field: 'TASK_STATUS',
				title: '测试状态'
			}, {
				field: 'TASK_DES',
				title: '测试任务描述',
				width: 200,
				cellStyle:{ 
					css:{ 
					"overflow": "hidden", 
					"text-overflow": "ellipsis", 
					"white-space": "nowrap" 
					} 
				}
			}, {
				field: 'CREATE_USER',
				title: '创建人'
			}]
		});
	};

	// 得到查询的参数
	oTableInit.queryParams = function (params) {
		localStorage.setItem("currentTestTaskPage", params.pageNumber);
		var temp = { // 这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的pageSize,
			// pageNumber, searchText, sortName, sortOrder
			pageSize: params.pageSize, // 页面大小
			pageNumber: params.pageNumber, // 页码
			sortName: params.sortName,
			sortOrder: params.sortOrder,
			taskName: $('#taskName').val(),
			taskCode: $('#taskCode').val(),
			taskStatus: $('#taskStatus').val()
		};
		return temp;
	};
	return oTableInit;
};

// 新建任務
function addTestTask() {
	BootstrapDialog
		.show({
			size: BootstrapDialog.SIZE_WIDE,
			title: '新增测试任务',
			draggable: true,
			closable: false,
			message: $("<form style='height:420px;'></form>").load(
				'taskAdd.html'),
			onshown: onLoadZTree,
			buttons: [{
				icon: 'glyphicon glyphicon-remove',
				label: '取消',
				cssClass: 'btn-primary',
				autospin: true,
				action: function (dialogRef) {
					dialogRef.close();
				}
			}, {
				icon: 'glyphicon glyphicon-check',
				label: '保存',
				cssClass: 'btn-primary',
				autospin: true,
				action: function () {
					saveTask(1);
				}
			}, {
				icon: 'glyphicon glyphicon-check',
				label: '下一步',
				cssClass: 'btn-primary',
				autospin: true,
				action: function () {
					saveTask(2);
				}
			}]
		});
	onLoadZTree();
}

function saveTask(type) {
	//type=1保存type=2下一步

	var nums = new Array();
	var sequenceIds = new Array();
	var platFormIds = new Array();
	var testTaskName = $('#testTaskName').val(); //任务名称
	var taskDes = $('#taskDes').val(); //任务描述
	var trList = $('#tb tr');
	if (testTaskName == "") {
		var content = "请输入测试任务名称！";
		warning(content);
	} else if (testTaskName.length >=25) {
		var content = "测试任务名称不能超过25个字符！";
		warning(content);
	}
	else
	if (checkString(taskDes) == "") {
		var content = "请输入测试任务描述！";
		warning(content);
	} else if (taskDes.length >=50) {
		var content = "测试任务描述不能超过50个字符！";
		warning(content);
	}else if (trList.length == 0) {
		var content = "请选择需要执行的测试序列！";
		warning(content);
	} else {
		for (var i = 0; i < trList.length; i++) {
			var id = trList[i].children[0].innerText.trim(); //序列id
			num = trList[i].children[2].children[0].value; //执行次数
			var select = trList[i].children[3];
			var selectValue = select.children[0].value; //平台id
			sequenceIds[i] = id;
			platFormIds[i] = selectValue;
			nums[i] = num;
		}
		$.ajax({
			url: '../../../testTask/addTestTask',
			type: 'post',
			dataType: "json",
			data: {
				"testTaskName": testTaskName,
				"taskDes": taskDes,
				"nums": JSON.stringify(nums),
				"sequenceIds": JSON.stringify(sequenceIds),
				"platFormIds": JSON.stringify(platFormIds)
			},
			success: function (data) {
				var flag = data.flag;
				var taskId = data.content;
				if (flag == 0) {
					var content = "保存成功！";
					success(content);
					setTimeout(function () {
						BootstrapDialog.closeAll();
					}, 800);
					if (type == 1) {
						$("#testTaskTables").bootstrapTable('refreshOptions',localStorage.getItem("currentTestTaskPage")?parseInt(localStorage.getItem("currentTestTaskPage")):1);
					} else if (type == 2) {
						window.location.href = "../html/autoTest.html?taskId=" + taskId + "&userName=" + userName;
					}
				} else {
					var content = "保存失败！";
					danger(content);
					setTimeout(function () {
						BootstrapDialog.closeAll();
					}, 800);
				}
			}
		});
	}
}

//检查字符串是否只有空，空格或换行
function checkString(str) {
	str=str.replace(/\n/g,'');
    for (var i=0; (str.charAt(i)==' ') && i<str.length; i++);
    if (i == str.length) return ''; //whole string is space
    var newstr = str.substr(i);
    for (var i=newstr.length-1; newstr.charAt(i)==' ' && i>=0; i--);
    newstr = newstr.substr(0,i+1);
    return newstr;
}
// 删除任务
function deleteTestTask() {
	var selectTask = $("#testTaskTables").bootstrapTable('getSelections');
	if (selectTask.length == 0) {
		warning("请选择要删除的测试任务!");
	} else {
		if (selectTask.length == 1) {
			var taskId = selectTask[0].ID;
			bootStrapShow(taskId);
		} else {
			bootStrapShowDeleteMore(selectTask);
		}
	}
}

// 删除任务ajax 请求
function deleteAjax(taskId) {
	$.ajax({
		url: "../../../testTask/deleteTestTask",
		type: "POST",
		data: {
			"taskId": taskId
		},
		success: function (data) {
			var flag = data.flag;
			if (flag == 0) {
				var content = "测试任务删除成功!";
				success(content);
				$("#testTaskTables").bootstrapTable('refreshOptions',localStorage.getItem("currentTestTaskPage")?parseInt(localStorage.getItem("currentTestTaskPage")):1);
			} else if (flag == 1) {
				var content = "没有删除该任务的权限！";
				warning(content);
			}
		},
		error: function (data) {
			var content = "测试任务删除失败!";
			danger(content);
		}
	});
}

// 删除多条提示框，传入参数是任务id集合
function bootStrapShowDeleteMore(selectTask) {
	BootstrapDialog.show({
		title: '提示',
		message: "您确定要删除吗?",
		buttons: [{
			icon: 'glyphicon glyphicon-check',
			label: '确定',
			cssClass: 'btn-primary',
			autospin: true,
			action: function (dialogRef) {
				for (var i = 0; i < selectTask.length; i++) {
					var taskId = selectTask[i].ID;
					deleteAjax(taskId);
				}
			}
		}, {
			label: '取消',
			action: function (dialogRef) {
				dialogRef.close();
			}
		}]
	});
}

// 删除单条提示框，传入参数是任务id
function bootStrapShow(taskId) {
	BootstrapDialog.show({
		title: '提示',
		message: "您确定要删除吗?",
		buttons: [{
			icon: 'glyphicon glyphicon-check',
			label: '确定',
			cssClass: 'btn-primary',
			autospin: true,
			action: function (dialogRef) {
				deleteAjax(taskId);
			}
		}, {
			label: '取消',
			action: function (dialogRef) {
				dialogRef.close();
			}
		}]
	});
}

//加载平台下拉列表
function loadPlatFormList(id, name) {
	$.ajax({
		url: "../../../testTask/queryPlatFormList",
		type: "POST",
		success: function (data) {
            if(data.flag==0){
            	var content = data.content;
    			tableAdd(id, name, content);
			}else{
				danger(data.errorInfo);
			}
		}
	});
}

//点击序列添加到table中
function tableAdd(id, name, content) {
	var sli = '<tr><td style="display:none">' + id + '</td><td>';
	sli += name;
	sli += '</td><td><input  onkeyup="this.value=this.value.replace(/[^0-9]/g,\'\')" maxlength="2" type="text" value="1" style="width:100%;height:100%;"></td><td>';
	sli += '<select style="width:100%;height:100%;"><option value="">自动</option>';
	for (var i = 0; i < content.length; i++) {
		var platFormId = content[i].platformId;
		var platFormName = content[i].platformName;
		sli += '<option value="' + platFormId + '">' + platFormName + '</option>';
	}
	sli += '</select></td><td>';
	sli += '<input type="button" class="btn btn-primary deletes" onclick="deleteTableTr(this)" value="删除"/></td>';
	sli += '</tr>';
	var $li = $(sli);
	$('#tb').append($li);
}

//点击删除清空本行
function deleteTableTr(w) {
	$(w).parent().parent().remove();
}

function exportWord() {
	var selectTask = $("#testTaskTables").bootstrapTable('getSelections');
	if (selectTask.length == 0) {
		warning("请选择要导出的测试任务!");
	} else {
		//当时测试任务为完成状态时，才可以导出
		if(selectTask[0].TASK_STATUS != "已完成"){
			warning("选择测试任务未完成，不可导出!");
			return;
		}
		if (selectTask.length == 1) {
			var taskId = selectTask[0].ID;
			exportWordForm(taskId);
		} else {
			//到处多分测试报告
		}
	}


	// window.location.href="../../../testTask/exportWord.action";
}
/**
 * 
 * @param taskId
 * @returns
 */
function exportWordForm(taskId) {

	var url = "../../../testTask/exportWord";
	
	var form = $("<form></form>").attr("action", url).attr("method", "post");
	form.append($("<input></input>").attr("type", "hidden").attr("name", "taskId").attr("value", taskId));
	form.appendTo('body').submit().remove();

}
function onKeyUpFun(event,count){
	if(event.value.length>count){
		warning('输入不能超过'+count+"个字符");
	}
}

//任务结果详情
function taskDetail(){
	var selectTask = $("#testTaskTables").bootstrapTable('getSelections');
	if(selectTask.length<=0){
		warning("请选择要查看的任务！");
		return;
	}
	
	$.ajax({
		async: false, // 是否异步
		cache: false, // 是否使用缓存
		type: 'POST', // 请求方式：post
		dataType: 'json', // 数据传输格式：json
		data:{
			taskId: selectTask[0].ID
		},
		url : "../../../testTask/getTestResultInfo",// 请求路径
		error: function () {
			// 请求失败处理函数
			warning('请求失败！');
		},
		success: function (data) {
			if(data.flag == 0){
				onShowDetail(data.content);
			}else{
				warning(data.errorInfo);
			}
		}
	});
}
//任务结果详情
function onShowDetail(data){
	BootstrapDialog
	.show({
		size: BootstrapDialog.SIZE_WIDE,
		title: '结果详情',
		draggable: true,
		closable: false,
		message: $("<form style='height:600px;'></form>").load(
			'taskDetail.html'),
		onshown: function(){
			showDetailData(data);
		},
		buttons: [{
			icon: 'glyphicon glyphicon-check',
			label: '确定',
			cssClass: 'btn-primary',
			autospin: true,
			action: function (dialogRef) {
				dialogRef.close();
			}
		}]
	});
	
}
//任务结果详情
function showDetailData (datas) {
	$('#tableDetail').bootstrapTable({
		cache: false,
		height: 600,
		striped: true,
		pagination: false,
		search: true,
		showColumns: true,
		showRefresh: false,
		showExport: false,
		search:false,
		showToggle : true, // 是否显示详细视图和列表视图的切换按钮
		clickToSelect: true,
		uniqueId: "ID", // 每一行的唯一标识，一般为主键列
		sidePagination: "client",
		data:datas,
		columns: [ {
			field: 'sequenceName',
			title: '测试序列',
			sortable:true,
			width : 100
		}, {
			field: 'caseName',
			title: '基本用例',
			sortable:true,
			width : 100
		}, {
			field : 'checkPoint',
			title : '检查点',
			width : 60
		}, {
			field : 'testResult',
			title : '结果',
			formatter:resultFormatter,
			width : 40
		}, {
			field: 'reason',
			title: '判定依据',
			width: 100,
			cellStyle:{ 
				css:{ 
				"overflow": "hidden", 
				"text-overflow": "ellipsis", 
				"white-space": "nowrap" 
				} 
			}
		}, {
			field : 'images',
			title : '图片',
			formatter:imagesFormatter,
			width : 40
		}]
	});
	$('.bootstrap-table tr td').each(function () {
        $(this).attr("title", $(this).text());
        $(this).css("cursor", 'pointer');
    });
	 function imagesFormatter(value, row, index) {//赋予的参数
	    var images = value.replace(/\r|\n/g, "");
	    var reason = row.reason.replace(/\r|\n/g, " ");
	    var a =reason.indexOf(" ");
	    if(a>0){
	    	reason = reason.substring(0,a);
	    }
		return ['<button type="button" onClick="showImage(\'' + images + '\',\'' + reason + '\')" class=" btn btn-default  btn-sm" style="margin-right:15px;"><span class="glyphicon  glyphicon-camera" aria-hidden="true"></span></button>',
		         ].join('');
};
function resultFormatter(value, row, index) {//修改测试结果样式
    if(value=="通过"){
    	 var a = '<span style="color:#00ff00">'+value+'</span>';  
    }else if(value=="未通过"){
    	 var a = '<span style="color:#FF0000">'+value+'</span>';  
    }else{
    	 var a = '<span>'+value+'</span>';  
    }
    return a;
};
}
//text文字提示信息
function showImage(images,text){
	var lab = "";
	var cssClass ="showImage-dialog1";
	if(text&&text.indexOf("观测项")>=0){
		lab ='<div><span style="margin-left:425px">标准值</span><span style="background: blue;display: inline-block;'
	        +'width: 50px !important;height: 3px;margin: 5px !important;"></span><span style="margin-left:25px"> 实际值</span><span style="background: red;'
	        +'display: inline-block;width: 50px !important;height: 3px;margin: 5px !important;"></span></div>';
		cssClass = "showImage-dialog";
	}else{
		text = "图像信息";
	}
	images = "<div class='resoultImgDiv'><img src='data:image/png;base64,"+images+"'/></div>";
	BootstrapDialog.show({
		size: BootstrapDialog.SIZE_WIDE,
		title: text,
		draggable: true,
		closable: false,
		cssClass:cssClass,
		message: lab+images,
		buttons: [{
			icon: 'glyphicon glyphicon-check',
			label: '确定',
			cssClass: 'btn-primary',
			autospin: true,
			action: function (dialogRef) {
				dialogRef.close();
			}
		}]
	});
}
//查询加载测试序列zTree树形图
function onSequenceLoadZTree(){
  var treeNodes;
  var treeSelect = $('#rush').val();
  $.ajax({
    async:false,//是否异步
    cache:false,//是否使用缓存
    data:{sequenceName:treeSelect},
    type:'POST',//请求方式：post
    dataType:'json',//数据传输格式：json
    url:"../../../sequence/querySequenceTree",//请求路径
    error:function(){
      //请求失败处理函数
      danger('请求失败！');
    },
    success:function(data){
		if(data.flag==0){
			//请求成功后处理函数
			treeNodes = data.content;//把后台封装好的简单Json格式赋给treeNodes
			var zTree = $("#tree");
			zTree = $.fn.zTree.init(zTree, setting, treeNodes);
			var treeObj = $.fn.zTree.getZTreeObj("tree");
			var nodes = treeObj.getNodes();
			for(var i = 0;i<nodes.length;i++){
				treeObj.expandNode(nodes[i],true,false,true);
			}
		}else{
			danger(data.errorInfo);
		}
	}
  });
}